package visiopuce.action;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

import org.apache.commons.lang.StringEscapeUtils;
import org.eclipse.jface.action.Action;

import visiopuce.ApplicationContexte;
import visiopuce.HibernateUtil;
import visiopuce.ICommandIds;
import visiopuce.DAO.ChampDAOImpl;
import visiopuce.objets.Analyse;
import visiopuce.objets.Biomedecine;
import visiopuce.objets.Champ;
import visiopuce.objets.Personne;
import visiopuce.objets.Prelevement;
import visiopuce.objets.Puce;
import visiopuce.objets.RenduBiomol;
import visiopuce.objets.RenduFish;
import visiopuce.objets.RenduPuce;
import visiopuce.objets.Resultat;
import visiopuce.objets.Utilisateur;
import visiopuce.service.AnalyseServiceImpl;
import visiopuce.service.FeuillePuceServiceImpl;
import visiopuce.service.PersonneServiceImpl;
import visiopuce.service.PrelevementServiceImpl;
import visiopuce.service.PuceServiceImpl;
import visiopuce.service.ReferentielService;
import visiopuce.service.ReferentielServiceImpl;
import visiopuce.service.ResultatServiceImpl;
import visiopuce.service.UtilisateurService;
import visiopuce.service.UtilisateurServiceImpl;

public class ParserListeADNAction extends Action {

	ReferentielService referentielService = ReferentielServiceImpl.getInstance();
	UtilisateurService utilisateurService = UtilisateurServiceImpl.getInstance();
	// SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
	SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
	private HashMap<Integer, Utilisateur> numPresc = new HashMap<Integer, Utilisateur>();
	private HashMap<Integer, Utilisateur> numAnnotateur = new HashMap<Integer, Utilisateur>();
	private HashMap<Integer, Utilisateur> numSignat = new HashMap<Integer, Utilisateur>();
	private HashMap<Integer, Float> terme = new HashMap<Integer, Float>();
	private HashMap<Integer, Biomedecine> biomed = new HashMap<Integer, Biomedecine>();

	public ParserListeADNAction(String text) {
		super(text);
		// The id is used to refer to the action in a menu or toolbar
		setId(ICommandIds.CMD_PARSER_LISTE_ADN);
		// Associate the action with a pre-defined command, to allow key
		// bindings.
		setActionDefinitionId(ICommandIds.CMD_PARSER_LISTE_ADN);
		setText("Parser la liste d'ADN");
		setToolTipText("Paser liste ADN");
		setImageDescriptor(visiopuce.Activator.getImageDescriptor("/icons/switch-user.png"));
	}

	public void run() {
		SimpleDateFormat formater = null;

		formater = new SimpleDateFormat("dd-MM-yyyy");
		String fichierPersonne = "Personne.csv";
		String fichierPrelevement = "Prelevement.csv";
		String fichierPuce = "Puce.csv";
		Biomedecine indicInconnue = ReferentielServiceImpl.getInstance().getTypeIndicationById(36);

		InputStream ips;
		try {
			ips = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/" + fichierPersonne);

			InputStreamReader ipsr = new InputStreamReader(ips, "utf8");
			BufferedReader br = new BufferedReader(ipsr);
			String lu;
			Biomedecine bm = new Biomedecine();
			bm.setIdBiomedecine(36);
			StringBuffer txtPersonne = new StringBuffer();
			while ((lu = br.readLine()) != null) {
				txtPersonne.append(lu);
			}
			String[] lignes = txtPersonne.toString().split("##");
			for (String ligne : lignes) {

				// System.out.println(ligne);
				String[] tableau = ligne.split("°°");
				if (tableau.length > 2) {
					if (tableau[8].equals("\"1\"")) {
						int idPersonne = 0;
						try {
							if (tableau[0].length() > 2) {
								idPersonne = Integer.parseInt(tableau[0].substring(1, tableau[0].length() - 1));
							}
						} catch (NumberFormatException ex) {
							System.out.print("erreur de idPersonne " + tableau[0].substring(1, tableau[0].length() - 1) + "ligne :" + tableau[0].substring(1, tableau[0].length() - 1));
						}
						Personne p = new Personne();
						p.setIdPersonne(idPersonne);
						if (tableau[1].length() > 2) {
							p.setNom(StringEscapeUtils.unescapeHtml(tableau[1].substring(1, tableau[1].length() - 1)).trim().toUpperCase());
						}
						if (tableau[2] != null && !tableau[2].equals("NULL") && !tableau[2].isEmpty()) {
							p.setPrenom(StringEscapeUtils.unescapeHtml(tableau[2].substring(1, tableau[2].length() - 1)).trim().toUpperCase());
						} else {
							p.setPrenom("non enregistré");
						}
						if (!tableau[3].equals("NULL") && !tableau[3].isEmpty()) {
							try {
								Date dateNaissance = formatter.parse(tableau[3].substring(1, tableau[3].length() - 1));
								p.setDateNaissance(dateNaissance);
							} catch (ParseException e) {
								System.out.println("erreur date de naissance " + tableau[3].substring(1, tableau[3].length() - 1) + ":" + ligne);
								e.printStackTrace();
							}
						}
						p.setSexe("NA");
						if (!tableau[4].equals("NULL") && tableau[4].length() > 2) {
							if (tableau[4] != null && !tableau[4].isEmpty()) {
								p.setSexe(tableau[4].substring(1, tableau[4].length() - 1));
							}
						}
						if (!tableau[5].equals("NULL") && tableau[5].length() > 2) {
							if (tableau[5].length() > 2) {
								p.setPhenotype(StringEscapeUtils.unescapeHtml(tableau[5].substring(1, tableau[5].length() - 1)));
							}
						}
						if (!tableau[6].equals("NULL") && tableau[6].length() > 2) {
							if (tableau[6].substring(1, tableau[6].length() - 1).equals("0")) {

								p.setPatient(false);
							} else {
								p.setPatient(true);
							}
						}
						if (tableau[7].equals("NULL") || tableau[7].isEmpty()) {
							numPresc.put(idPersonne, null);
						} else {
							try {
								numPresc.put(idPersonne, UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(tableau[7].substring(1, tableau[7].length() - 1))));
							} catch (NumberFormatException ex) {
								numPresc.put(idPersonne, null);
								System.out.println("erreur presc : " + ligne);
							}
						}
						if (tableau[10].equals("NULL") || tableau[10].isEmpty()) {
							numAnnotateur.put(idPersonne, null);
						} else {
							try {
								numAnnotateur.put(idPersonne, UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(tableau[10].substring(1, tableau[10].length() - 1))));
							} catch (NumberFormatException ex) {
								numAnnotateur.put(idPersonne, null);
								System.out.println("erreur annotateur : " + ligne);
							}
						}

						if (!tableau[11].equals("NULL") && !tableau[11].isEmpty() && !tableau[11].substring(1, tableau[11].length() - 1).equals("0")) {
							terme.put(idPersonne, Float.parseFloat(tableau[11].substring(1, tableau[11].length() - 1)));
						}
						if (!tableau[12].equals("NULL") && !tableau[12].isEmpty() && !tableau[12].substring(1, tableau[12].length() - 1).equals("0")) {
							p.setIdPucePrincipale(Integer.parseInt(tableau[12].substring(1, tableau[12].length() - 1)));
						}

						if (tableau[13].equals("NULL") || tableau[13].isEmpty() || tableau[13].substring(1, tableau[13].length() - 1).equals("0")) {
							biomed.put(idPersonne, indicInconnue);
						} else {
							biomed.put(idPersonne, ReferentielServiceImpl.getInstance().getTypeIndicationById(Integer.parseInt(tableau[13].substring(1, tableau[13].length() - 1))));
						}

						if (tableau[15].equals("NULL") || tableau[15].isEmpty() || tableau[15].substring(1, tableau[15].length() - 1).equals("0")) {
							numSignat.put(idPersonne, null);
						} else {
							numSignat.put(idPersonne, UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(tableau[15].substring(1, tableau[15].length() - 1))));
						}
						p.setType("NA");
						if (tableau.length > 17 && tableau[17].length() > 2) {
							p.setCommentaires(StringEscapeUtils.unescapeHtml(tableau[17].substring(1, tableau[17].length() - 1)));
						}
						if (p.getNumSejour() == null) {
							p.setNumSejour("Non rentré");
						}
						HibernateUtil.beginTransaction();
						HibernateUtil.getSession().save(p);
						HibernateUtil.commitTransaction();
					} else {
						System.out.println("erreur : personne ne faisant pas parti du groupe de montpellier" + tableau[8] + ligne);
					}
				} else {
					System.out.println("erreur 2 : tableau.length > 2" + ligne);
				}
			}

			FileInputStream ipP = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/" + fichierPrelevement);

			InputStreamReader ipPr = new InputStreamReader(ipP, "utf8");
			BufferedReader brP = new BufferedReader(ipPr);

			StringBuffer txtPrelev = new StringBuffer();
			while ((lu = brP.readLine()) != null) {
				txtPrelev.append(lu);
			}
			String[] lignesPrel = txtPrelev.toString().split("##");
			for (String ligneP : lignesPrel) {

				String[] tableau = ligneP.split("°°");
				if (tableau.length > 2) {
					Personne p = null;
					Prelevement prel = new Prelevement();
					prel.setIdPrelevement(Integer.parseInt(tableau[0].substring(1, tableau[0].length() - 1)));
					if (tableau[1].length() > 2) {
						p = PersonneServiceImpl.getInstance().getPersonneById(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1)));
					}
					if (p != null) {
						prel.setPersonne(p);
						String numDossier = "";
						if (tableau[2].length() > 2) {
							numDossier = tableau[2].substring(1, tableau[2].length() - 1).trim();
							prel.setNumeroPrelevement(numDossier);
						}

						if (tableau[3].equals("NULL")) {
							prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(10));
						} else {
							prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(Integer.parseInt(tableau[3].substring(1, tableau[3].length() - 1))));
						}

						String numDerive = null;
						String[] tt = numDossier.split("-");
						if (tt.length > 2) {
							numDerive = (tt[0] + "-" + tt[1]).trim();
						} else if (numDossier.contains("dil")) {
							String[] tt2 = numDossier.split("dil");
							numDerive = tt2[0].trim();
						} else if (numDossier.contains("DIL")) {
							String[] tt2 = numDossier.split("DIL");
							numDerive = tt2[0].trim();
						} else if (numDossier.contains("bis")) {
							String[] tt2 = numDossier.split("bis");
							numDerive = tt2[0].trim();
						} else if (numDossier.length() > 8 && !numDossier.substring(0, 2).equals("LA") && !numDossier.substring(0, 2).equals("SF") && !numDossier.substring(0, 2).equals("VC")) {
							System.out.println("dérivé à entrer à la main : " + tableau[2].substring(1, tableau[2].length() - 1));
						} else if (numDossier.length() > 9 && (numDossier.substring(0, 2).equals("LA") || numDossier.substring(0, 2).equals("SF") || numDossier.substring(0, 2).equals("VC"))) {
							System.out.println("dérivé à entrer à la main : " + tableau[2].substring(1, tableau[2].length() - 1));
						}
						if (numDerive != null && !numDerive.isEmpty()) {
							Prelevement pder = PrelevementServiceImpl.getInstance().getPrelevementByNumero(numDerive);
							if (pder != null) {
								prel.setDerive(pder);

							}
						}

						if (tableau[1].length() > 2 && !tableau[1].equals("NULL")) {
							prel.setIndication(biomed.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))));

							if (biomed.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))) != null) {
								if (biomed.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))).getCategorie() == 1) {
									prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom(ApplicationContexte.SECTEUR_PUCE_PRENATAL));
								} else if (biomed.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))).getCategorie() == 2) {
									prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom(ApplicationContexte.SECTEUR_PUCE_POSTNATAL));
								} else if (biomed.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))).getCategorie() == 3 || biomed.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))).getCategorie() == 4) {
									prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom(ApplicationContexte.SECTEUR_PUCE_FOETO));
								} else {
									prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom(ApplicationContexte.SECTEUR_PUCE_POSTNATAL));
								}
							} else {
								if (terme.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))) != null) {
									prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom(ApplicationContexte.SECTEUR_PUCE_PRENATAL));
								} else {
									prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom(ApplicationContexte.SECTEUR_PUCE_POSTNATAL));
								}
							}
						}
						prel.setDpi(false);
						prel.setRecherche(false);
						if (prel.getIndication() == null) {
							prel.setIndication(indicInconnue);
						}
						HibernateUtil.beginTransaction();
						HibernateUtil.getSession().save(prel);
						HibernateUtil.commitTransaction();

						if (terme.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))) != null) {
							Champ tTerme = new Champ();
							tTerme.setIdObjet("Prel-" + prel.getIdPrelevement());
							tTerme.setType("tTerme");
							tTerme.setValeur("" + terme.get(Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1))));
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().save(tTerme);
							HibernateUtil.commitTransaction();

						}

						if (!tableau[5].isEmpty() && !tableau[5].equals("NULL")) {
							Champ tRangement = new Champ();
							tRangement.setIdObjet("Prel-" + prel.getIdPrelevement());
							tRangement.setType("tRangement");
							tRangement.setValeur(tableau[5].substring(1, tableau[5].length() - 1));
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().save(tRangement);
							HibernateUtil.commitTransaction();
						}

						if (!tableau[4].isEmpty() && !tableau[4].equals("NULL")) {
							Champ tConcentration = new Champ();
							tConcentration.setIdObjet("Prel-" + prel.getIdPrelevement());
							tConcentration.setType("tConcentration");
							tConcentration.setValeur(tableau[4].substring(1, tableau[4].length() - 1));
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().save(tConcentration);
							HibernateUtil.commitTransaction();

						}

						if (!tableau[6].isEmpty() && !tableau[6].equals("NULL")) {
							Champ tConcentration = new Champ();
							tConcentration.setIdObjet("Prel-" + prel.getIdPrelevement());
							tConcentration.setType("tConcentration");
							tConcentration.setValeur(tableau[6].substring(1, tableau[6].length() - 1));
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().save(tConcentration);
							HibernateUtil.commitTransaction();
						}
					} else {
						System.out.println("pas de personne pour le prélèvement : " + Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1)) + " ligne : " + ligneP);
					}
				}

			}

			FileInputStream ipPuce = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/" + fichierPuce);

			InputStreamReader ipPuc = new InputStreamReader(ipPuce, "utf8");
			BufferedReader brPuc = new BufferedReader(ipPuc);
			StringBuffer txtPuce = new StringBuffer();
			while ((lu = brPuc.readLine()) != null) {
				txtPuce.append(lu);
			}
			String[] lignesPuce = txtPuce.toString().split("##");
			for (String lignePuc : lignesPuce) {

				String[] tableau = lignePuc.split("°°");
				if (tableau.length > 2) {
					try {
						if (tableau[12].length() > 2) {
							Prelevement prelPuce = PrelevementServiceImpl.getInstance().getPrelevementById(Integer.parseInt(tableau[12].substring(1, tableau[12].length() - 1)));
							if (prelPuce != null) {
								Analyse ana = new Analyse();
								// if (tableau[0].length() > 2 ) {
								// ana.setIdAnalyse(Integer.parseInt(tableau[0].substring(1,
								// tableau[0].length() - 1)));
								// }
								ana.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("3"));
								ana.setPrescripteur(numPresc.get(prelPuce.getPersonne().getIdPersonne()));
								ana.setPrelevement(prelPuce);
								ana.setUrgent(false);
								ana.setUfExec(4274);
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(ana);
								HibernateUtil.commitTransaction();

								Puce puce = new Puce();
								if (tableau[0].length() > 2 && !tableau[0].equals("NULL")) {
									puce.setIdPuce(Integer.parseInt(tableau[0].substring(1, tableau[0].length() - 1)));
								}
								if (tableau[1] != null && !tableau[1].isEmpty() && tableau[1].length() > 2 && !tableau[1].equals("NULL")) {
									puce.setParametres(StringEscapeUtils.unescapeHtml(tableau[1].substring(1, tableau[1].length() - 1)));
								}
								if (tableau[2] != null && !tableau[2].isEmpty() && tableau[2].length() > 2 && !tableau[2].equals("NULL")) {
									puce.setCommentaireAnnotateur(StringEscapeUtils.unescapeHtml(tableau[2].substring(1, tableau[2].length() - 1)));
								}
								if (tableau[3] != null && !tableau[3].isEmpty() && tableau[3].length() > 2 && !tableau[3].equals("NULL")) {
									puce.setConclusionReunion(StringEscapeUtils.unescapeHtml(tableau[3].substring(1, tableau[3].length() - 1)));
								}
								puce.setAnnotateur(numAnnotateur.get(prelPuce.getPersonne().getIdPersonne()));
								if (tableau[7] != null && !tableau[7].isEmpty() && !tableau[7].equals("NULL")) {
									puce.setTypeLogiciel(ReferentielServiceImpl.getInstance().getTypeLogicielById(Integer.parseInt(tableau[7].substring(1, tableau[7].length() - 1))));
								}
								if (tableau[8] != null && !tableau[8].isEmpty() && !tableau[8].equals("NULL")) {
									puce.setTypePuce(ReferentielServiceImpl.getInstance().getTypePuceById(Integer.parseInt(tableau[8].substring(1, tableau[8].length() - 1))));
								}
								if (tableau[9] != null && !tableau[9].isEmpty() && !tableau[9].equals("NULL") && !tableau[9].equals("\"0\"")) {
									puce.setFeuillePuce(FeuillePuceServiceImpl.getInstance().getFeuillePuceById(Integer.parseInt(tableau[9].substring(1, tableau[9].length() - 1))));
								}
								puce.setSupprimer(false);
								if (tableau[10].substring(1, tableau[10].length() - 1).equals("1")) {
									puce.setSupprimer(true);
								}
								if (tableau[11] != null && !tableau[11].isEmpty() && tableau[11].length() > 2) {
									puce.setSexePuce(tableau[11].substring(1, tableau[11].length() - 1));
								} else {
									puce.setSexePuce("NA");
								}
								puce.setAnalyse(ana);
								if (tableau[13] != null && !tableau[13].isEmpty() && tableau[13].length() > 2) {
									puce.setCommentaireSignataires(StringEscapeUtils.unescapeHtml(tableau[13].substring(1, tableau[13].length() - 1)));
								}
								if (tableau[5] != null && !tableau[5].equals("\"NULL\"") && !tableau[5].equals("NULL")) {
									puce.setAnnotateur(UtilisateurServiceImpl.getInstance().getUtilisateurById(Integer.parseInt(tableau[5].substring(1, tableau[5].length() - 1))));
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(puce);
								HibernateUtil.commitTransaction();

							} else {
								System.out.println("pas de prélèvement pour cette puce? : " + lignePuc);
							}
						}
					} catch (Exception e) {
						System.out.println("erreur puce " + lignePuc);
						e.printStackTrace();
					}
				}
			}
			FileInputStream ipRP = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/rendu_puce.csv");

			InputStreamReader ipPrp = new InputStreamReader(ipRP, "utf8");
			BufferedReader brRP = new BufferedReader(ipPrp);
			StringBuffer txtRP = new StringBuffer();
			while ((lu = brRP.readLine()) != null) {
				txtRP.append(lu);
			}
			String[] lignesRP = txtRP.toString().split("##");
			for (String ligneRP : lignesRP) {

				String[] tableau = ligneRP.split("°°");
				if (tableau.length > 2) {
					try {
						Resultat result = new Resultat();
						if (tableau[10].length() > 2) {
							Puce p = PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(tableau[10].substring(1, tableau[10].length() - 1)));
							if (p != null) {
								result.setAnalyse(p.getAnalyse());
								if (tableau[8].length() > 2) {
									result.setCommentaire(StringEscapeUtils.unescapeHtml(tableau[8].substring(1, tableau[8].length() - 1)));
								}
								if (!tableau[1].isEmpty() && tableau[1].length() > 2 && !tableau[1].equals("NULL")) {
									try {
										Date dateRendu = formatter.parse(tableau[1].substring(1, tableau[1].length() - 1));
										result.setDateRendu(dateRendu);
									} catch (ParseException e) {
										System.out.println("erreur date de naissance " + tableau[3].substring(1, tableau[3].length() - 1) + ":" + ligneRP);
										e.printStackTrace();
									}
								}
								if (tableau[9].length() > 2) {
									String formule = StringEscapeUtils.unescapeHtml(tableau[9].substring(1, tableau[9].length() - 1).trim());
									result.setFormule(formule);
									if (formule == null || formule.equals("46,XX") || formule.equals("ar(1-22,X)x2") || formule.equals("arr (1-22)x2,(XY)x1") || formule.equals("arr (1-22,X)x2") || formule.equals("arr(1-22)x2") || formule.equals("arr(1-22)x2, (XY)x1")
											|| formule.equals("arr(1-22)x2,(X,Y)x1") || formule.equals("arr(1-22)x2,(XY)x1") || formule.equals("arr(1-22)x2,(XY)x1") || formule.equals("arr(1-22,X)x2") || formule.equals("arr(1-22,X)x2") || formule.equals("arr(1-22,X)x2,(XY)x1")
											|| formule.equals("arr(1-22,Y)x2,(Xx1)") || formule.contains("Pas de microréarrangement")) {
										result.setResultat("Normal");
									} else {
										if (formule.substring(0, 2).equals("arr")) {
											result.setResultat("Anormal déséquilibré");
											String chr = "";
											String[] tablArr = formule.substring(2).trim().split(",");
											for (String arr : tablArr) {
												String[] tab2 = arr.split("p|q");
												if (tab2.length > 0) {
													chr += tab2[0] + "|";
												}
											}
											if (!chr.isEmpty()) {
												System.out.println("formule : " + formule + "chr : " + chr);
												result.setChromosomes(chr);
											}
										}
									}
								}
								result.setSignataire(numSignat.get(p.getAnalyse().getPrelevement().getPersonne().getIdPersonne()));
								result.setHerite("NA");
								result.setResultat("NA");
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(result);
								HibernateUtil.commitTransaction();

								RenduPuce rp = new RenduPuce();
								if (tableau[0].length() > 2) {
									rp.setIdRenduPuce(Integer.parseInt(tableau[0].substring(1, tableau[0].length() - 1)));
								}
								if (tableau[2].length() > 2) {
									rp.setAnoter(StringEscapeUtils.unescapeHtml(tableau[2].substring(1, tableau[2].length() - 1)));
								}
								if (tableau[7].length() > 2) {
									rp.setBuild(tableau[7].substring(1, tableau[7].length() - 1));
								}
								if (tableau[13].substring(1, tableau[13].length() - 1) != null && !tableau[13].equals("NULL"))
									rp.setTypePlanExp(ReferentielServiceImpl.getInstance().getTypePlanExpByid(Integer.parseInt(tableau[13].substring(1, tableau[13].length() - 1))));
								rp.setResultat(result);
								// if (tableau[6].length() > 2) {
								// rp.setValide(Boolean.parseBoolean(tableau[6].substring(1,
								// tableau[6].length() - 1)));
								// }
								if (tableau[12].length() > 2 && !tableau[12].equals("NULL")) {
									rp.setResolution(StringEscapeUtils.unescapeHtml(tableau[12].substring(1, tableau[12].length() - 1)));
								}
								// if (tableau[14].length() > 2 &&
								// !tableau[14].equals("NULL")) {
								// rp.setVous(tableau[14].substring(1,
								// tableau[14].length() - 1));
								// }
								rp.setPuce(PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(tableau[10].substring(1, tableau[10].length() - 1))));
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(rp);
								HibernateUtil.commitTransaction();
							} else {
								System.out.println("erreur pas de puce pour le résutlat puce : " + ligneRP);
							}
						}
					} catch (Exception e) {
						System.out.println("erreur résultat puce : " + ligneRP);
						e.printStackTrace();
					}
				}

			}

			FileInputStream ipRBM = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/rendu_biomol.csv");

			InputStreamReader ipPrbm = new InputStreamReader(ipRBM, "utf8");
			BufferedReader brRBM = new BufferedReader(ipPrbm);
			StringBuffer txtRBM = new StringBuffer();
			while ((lu = brRBM.readLine()) != null) {
				txtRBM.append(lu);
			}
			String[] lignesRBM = txtRBM.toString().split("##");
			for (String ligneRBM : lignesRBM) {

				String[] tableau = ligneRBM.split("°°");
				if (tableau.length > 2) {
					try {
						Resultat result = new Resultat();
						if (tableau[10].length() > 2) {
							Puce p = PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(tableau[10].substring(1, tableau[10].length() - 1)));
							if (p != null) {
								Analyse anaPuce = AnalyseServiceImpl.getInstance().getAnalyseByIdAnalyse(p.getAnalyse().getIdAnalyse());
								Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementById(anaPuce.getPrelevement().getIdPrelevement());

								Analyse ana = null;
								ana = AnalyseServiceImpl.getInstance().getAnalyseByTypeAndNumeroPrelevement(4, prel.getNumeroPrelevement());
								if (ana == null) {
									ana = new Analyse();
								}
								if (ana.getPrelevement() == null) {
									ana.setPrelevement(p.getAnalyse().getPrelevement());
								}
								if (ana.getPrescripteur() == null) {
									ana.setPrescripteur(p.getAnalyse().getPrescripteur());
								}

								ana.setTypeAnalyse(referentielService.getTypeAnalyseByid("4"));
								ana.setUfExec(4274);
								ana.setUrgent(false);

								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(ana);
								HibernateUtil.commitTransaction();

								result.setAnalyse(ana);
								if (tableau[5].length() > 2) {
									result.setCommentaire(StringEscapeUtils.unescapeHtml(tableau[5].substring(1, tableau[5].length() - 1)));
								}
								result.setHerite("NA");
								result.setResultat("NA");
								if (!tableau[2].isEmpty() && tableau[2].length() > 2 && !tableau[2].equals("NULL")) {
									try {
										Date dateRendu = formatter.parse(tableau[2].substring(1, tableau[2].length() - 1));
										result.setDateRendu(dateRendu);
									} catch (ParseException e) {
										System.out.println("erreur date de naissance " + tableau[2].substring(1, tableau[2].length() - 1) + ":" + ligneRBM);
										e.printStackTrace();
									}
								}
								result.setFormule("");
								result.setSignataire(utilisateurService.getUtilisateurByNom("Touitou"));
								if (tableau[7].length() > 2) {
									if (tableau[7].substring(1, tableau[7].length() - 1).equals("1")) {
										result.setHerite("Hérité de l'un des 2");
									} else if (tableau[7].substring(1, tableau[7].length() - 1).equals("0")) {
										result.setHerite("Non verifié");
									} else if (tableau[7].substring(1, tableau[7].length() - 1).equals("2")) {
										result.setHerite("De novo");
									}
								}

								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(result);
								HibernateUtil.commitTransaction();

								RenduBiomol rbm = new RenduBiomol();
								if (tableau[0].length() > 2) {
									rbm.setIdRenduBioMol(Integer.parseInt(tableau[0].substring(1, tableau[0].length() - 1)));
								}
								if (tableau[9].length() > 2) {
									rbm.setBuild(tableau[9].substring(1, tableau[9].length() - 1));
								}
								if (tableau[6].length() > 2) {
									rbm.setCoherencePuce(tableau[6].substring(1, tableau[6].length() - 1).equals("1"));
								}
								if (tableau[8].length() > 2) {
									rbm.setValide(Integer.parseInt(tableau[8].substring(1, tableau[8].length() - 1)));
								}
								rbm.setResultat(result);
								if (tableau[10].length() > 2) {
									rbm.setPuce(PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(tableau[10].substring(1, tableau[10].length() - 1))));
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(rbm);
								HibernateUtil.commitTransaction();
							} else {
								System.out.println("erreur pas de puce pour le résulat de BM : " + ligneRBM);
							}
						}
					} catch (Exception e) {
						System.out.println("erreur resulat BM" + ligneRBM);
						e.printStackTrace();
					}
				}

			}

			FileInputStream ipRf = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/rendu_fish.csv");

			InputStreamReader ipPrf = new InputStreamReader(ipRf, "utf8");
			BufferedReader brRf = new BufferedReader(ipPrf);
			StringBuffer txtRF = new StringBuffer();
			while ((lu = brRf.readLine()) != null) {
				txtRF.append(lu);
			}
			String[] lignesRF = txtRF.toString().split("##");
			for (String ligneRf : lignesRF) {

				String[] tableau = ligneRf.split("°°");
				if (tableau.length > 2) {
					try {
						Resultat result = new Resultat();
						if (tableau[10].length() > 2) {
							Puce p = PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(tableau[10].substring(1, tableau[10].length() - 1)));
							Analyse anaPuce = AnalyseServiceImpl.getInstance().getAnalyseByIdAnalyse(p.getAnalyse().getIdAnalyse());
							Prelevement prel = PrelevementServiceImpl.getInstance().getPrelevementById(anaPuce.getPrelevement().getIdPrelevement());
							if (p != null) {
								Analyse ana = null;
								ana = AnalyseServiceImpl.getInstance().getAnalyseByTypeAndNumeroPrelevement(2, prel.getNumeroPrelevement());
								if (ana == null) {
									ana = new Analyse();
								}
								if (ana.getPrelevement() == null) {
									ana.setPrelevement(p.getAnalyse().getPrelevement());
								}
								if (ana.getPrescripteur() == null) {
									ana.setPrescripteur(p.getAnalyse().getPrescripteur());
								}
								ana.setTypeAnalyse(referentielService.getTypeAnalyseByid("2"));
								ana.setUfExec(4274);

								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(ana);
								HibernateUtil.commitTransaction();

								result.setAnalyse(ana);
								if (tableau[5].length() > 2) {
									result.setCommentaire(StringEscapeUtils.unescapeHtml(tableau[5].substring(1, tableau[5].length() - 1)));
								}
								if (!tableau[2].isEmpty() && !tableau[2].equals("NULL")) {
									try {
										Date dateRendu = formatter.parse(tableau[2].substring(1, tableau[2].length() - 1));
										result.setDateRendu(dateRendu);
									} catch (ParseException e) {
										System.out.println("erreur date de naissance " + tableau[2].substring(1, tableau[2].length() - 1) + ":" + ligneRf);
										e.printStackTrace();
									}
								}
								if (tableau[6].length() > 2) {
									result.setFormule(tableau[6].substring(1, tableau[6].length() - 1));
								}
								result.setSignataire(utilisateurService.getUtilisateurByNom("Touitou"));
								result.setResultat("NA");
								if (tableau[7].length() > 2) {
									if (tableau[7].substring(1, tableau[7].length() - 1).equals("1")) {
										result.setHerite("Hérité de l'un des 2");
									} else if (tableau[7].substring(1, tableau[7].length() - 1).equals("0")) {
										result.setHerite("Non verifié");
									} else if (tableau[7].substring(1, tableau[7].length() - 1).equals("2")) {
										result.setHerite("De novo");
									} else {
										result.setHerite("NA");
									}
								}

								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().save(result);
								HibernateUtil.commitTransaction();

								RenduFish rf = new RenduFish();
								if (tableau[0].length() > 2) {
									rf.setIdRenduFish(Integer.parseInt(tableau[0].substring(1, tableau[0].length() - 1)));
								}
								if (tableau[8].length() > 2) {
									rf.setBuild(tableau[8].substring(1, tableau[8].length() - 1));
								}
								if (tableau[7].length() > 2) {
									rf.setValide(Integer.parseInt(tableau[7].substring(1, tableau[7].length() - 1)));
								}
								rf.setResultat(result);
								if (tableau[9].length() > 2) {
									Puce pu = PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(tableau[9].substring(1, tableau[9].length() - 1)));
									if (pu != null) {
										rf.setPuce(pu);
										HibernateUtil.beginTransaction();
										HibernateUtil.getSession().save(rf);
										HibernateUtil.commitTransaction();
									} else {
										System.out.println("erreur pas de puce pour le résulat de FISH : " + ligneRf + "id puce : " + Integer.parseInt(tableau[9].substring(1, tableau[9].length() - 1)));
									}
								} else {
									System.out.println("erreur pas de puce pour le résulat de FISH : " + ligneRf + "id puce : " + Integer.parseInt(tableau[9].substring(1, tableau[9].length() - 1)));
								}

							} else {
								System.out.println("erreur pas de puce pour le résulat de FISH : " + ligneRf);
							}
						}
					} catch (Exception e) {
						System.out.println("erreur resutlat Fish" + ligneRf);
						e.printStackTrace();
					}
				}

			}

			FileInputStream fipD = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/date.csv");

			InputStreamReader ipD = new InputStreamReader(fipD, "utf8");
			BufferedReader brD = new BufferedReader(ipD);
			StringBuffer txtD = new StringBuffer();
			while ((lu = brD.readLine()) != null) {
				txtD.append(lu);
			}
			String[] lignesD = txtD.toString().split("##");
			for (String ligneD : lignesD) {
				try {
					Personne p = null;
					Puce puce = null;
					Prelevement prel = null;
					String type = null;
					String idObj = null;
					Utilisateur user = null;
					String[] tableau = ligneD.split("°°");
					if (tableau.length > 2) {
						if (tableau[3].length() > 2) {
							type = tableau[3].substring(1, tableau[3].length() - 1);
						}
						if (tableau[2].length() > 2) {
							user = utilisateurService.getUtilisateurById(Integer.parseInt(tableau[2].substring(1, tableau[2].length() - 1)));
						}
						if (tableau[1].length() > 2) {
							idObj = tableau[1].substring(1, tableau[1].length() - 1);
						}
						int idTypeDate = Integer.parseInt(tableau[4].substring(1, tableau[4].length() - 1));
						Date dateS = null;
						if (!tableau[5].isEmpty() && !tableau[5].equals("NULL")) {
							try {
								dateS = formatter.parse(tableau[5].substring(1, tableau[5].length() - 1));
							} catch (ParseException e) {
								System.out.println("erreur date : " + tableau[5].substring(1, tableau[5].length() - 1) + ":" + ligneD);
								e.printStackTrace();
							}
						}
						String commentaire = tableau[6].substring(1, tableau[6].length() - 1);

						if (type.equals("idPrelevement")) {
							prel = PrelevementServiceImpl.getInstance().getPrelevementById(Integer.parseInt(idObj));
							if (prel != null) {
								if (idTypeDate == 2) {
									if (prel.getDatePrelevement() == null) {
										prel.setDatePrelevement(dateS);
									}
								}
								if (idTypeDate == 3) {
									if (prel.getDateReception() == null) {
										prel.setDateReception(dateS);
									}
								}
								if (idTypeDate == 4) {
									Champ dExtract = new Champ();
									dExtract.setIdObjet("Prel-" + prel.getIdPrelevement());
									dExtract.setType("dateExtraction");
									dExtract.setValeur(formater.format(dateS));
									HibernateUtil.beginTransaction();
									HibernateUtil.getSession().save(dExtract);
									HibernateUtil.commitTransaction();
								}
								if (idTypeDate == 5) {
									Champ dExtract = new Champ();
									dExtract.setIdObjet("Prel-" + prel.getIdPrelevement());
									dExtract.setType("datePurification");
									dExtract.setValeur(formater.format(dateS));
									HibernateUtil.beginTransaction();
									HibernateUtil.getSession().saveOrUpdate(dExtract);
									HibernateUtil.commitTransaction();
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(prel);
								HibernateUtil.commitTransaction();
							} else {
								System.out.println("pas de prélèvement pour cette date :" + ligneD);
							}
						}

						if (type.equals("idPuce")) {
							try {
								puce = PuceServiceImpl.getInstance().getPuceByid(Integer.parseInt(idObj));
								if (puce != null) {
									if (idTypeDate == 7) {
										if (puce.getAnalyse().getDateTechnique() == null) {
											puce.getAnalyse().setDateTechnique(dateS);
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
											HibernateUtil.commitTransaction();
										}
									}
									if (idTypeDate == 8) {
										if (puce.getDateScan() == null) {
											puce.setDateScan(dateS);
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(puce);
											HibernateUtil.commitTransaction();
										}
									}
									if (idTypeDate == 10) {
										if (puce.getDateAnnotation() == null) {
											puce.setDateAnnotation(dateS);
											if (puce.getAnnotateur() == null) {
												puce.setAnnotateur(user);
											}
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(puce);
											HibernateUtil.commitTransaction();
										}
									}
									if (idTypeDate == 11) {
										if (puce.getDateAnnotation() == null) {
											puce.setDateAnnotation(dateS);
											if (puce.getAnnotateur() == null) {
												puce.setAnnotateur(user);
											}
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(puce);
											HibernateUtil.commitTransaction();
										}
									}
									if (idTypeDate == 12) {
										if (puce.getDateRelecture() == null) {
											puce.setDateRelecture(dateS);
											if (puce.getSignataire() == null) {
												puce.setSignataire(user);
											}
											if (commentaire.equals("Envoyé en réunion")) {
												puce.setaPasserEnReunion(true);
											} else {
												puce.setaPasserEnReunion(false);
											}
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(puce);
											HibernateUtil.commitTransaction();
										}
									}
									if (idTypeDate == 13) {
										if (puce.getDateReunion() == null) {
											puce.setDateReunion(dateS);
											puce.setaPasserEnReunion(true);
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(puce);
											HibernateUtil.commitTransaction();
										}
									}
									if (idTypeDate == 16) {
										RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(Integer.parseInt(idObj));
										if (r != null) {
											if (r.getResultat().getDateRendu() == null) {
												r.getResultat().setDateRendu(dateS);
												r.getResultat().setSignataire(user);
												HibernateUtil.beginTransaction();
												HibernateUtil.getSession().saveOrUpdate(r.getResultat());
												HibernateUtil.commitTransaction();

											}
										}
									}
									if (idTypeDate == 500) {
										RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(Integer.parseInt(idObj));
										if (r != null) {
											if (r.getResultat().getDateRendu() == null) {
												r.getResultat().setDateRendu(dateS);
												r.getResultat().setSignataire(user);
												HibernateUtil.beginTransaction();
												HibernateUtil.getSession().saveOrUpdate(r.getResultat());
												HibernateUtil.commitTransaction();
											}
										} else {
											Resultat resultat = new Resultat();
											resultat.setAnalyse(puce.getAnalyse());
											resultat.setCommentaire(tableau[6]);
											resultat.setDateRendu(dateS);
											resultat.setResultat("Echec");
											resultat.setSignataire(user);
											resultat.setHerite("NA");
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(resultat);
											HibernateUtil.commitTransaction();
										}
									}

								} else {
									System.out.println("pas de puce pour cette date :" + ligneD);
								}

							} catch (NumberFormatException e) {
								System.out.println("mauvais idPuce :" + ligneD);
							}

							if (type.equals("idPuce_idResultatPuce")) {
								idObj = idObj.substring(1, idObj.length() - 1);
								String[] tabl = idObj.split("_");
								if (tabl.length == 1 || (tabl.length == 2 && Integer.parseInt(tabl[1]) == 1)) {
									RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(Integer.parseInt(tabl[0]));
									if (r != null) {
										if (idTypeDate == 14) {
											if (r.getDateRedaction() == null) {
												r.setDateRedaction(dateS);
											}
										}

										if (idTypeDate == 15) {
											if (r.getResultat().getSignataire() == null) {
												r.getResultat().setSignataire(user);
												HibernateUtil.beginTransaction();
												HibernateUtil.getSession().saveOrUpdate(r.getResultat());
												HibernateUtil.commitTransaction();
											}
											if (r.getResultat().getDateRendu() == null) {
												r.getResultat().setDateRendu(dateS);
											}
										}
										HibernateUtil.beginTransaction();
										HibernateUtil.getSession().saveOrUpdate(r);
										HibernateUtil.commitTransaction();
									} else {
										System.out.println("pas de RenduPuce pour cette date :" + ligneD);
									}
								} else {
									System.out.println("date resultat puce à la main :" + ligneD);
								}
							}

							if (type.equals("idPuce_idResultatFISH")) {
								idObj = idObj.substring(1, idObj.length() - 1);
								String[] tabl = idObj.split("_");
								if (tabl.length == 1 || (tabl.length == 2 && Integer.parseInt(tabl[1]) == 1)) {
									RenduFish r = ResultatServiceImpl.getInstance().getResultatFishByIdPuce(Integer.parseInt(tabl[0]));
									if (r != null) {
										if (idTypeDate == 22) {
											if (r.getDateRedaction() == null) {
												r.setDateRedaction(dateS);
											}
											if (r.getResultat().getAnalyse().getTechnicienne() == null) {
												r.getResultat().getAnalyse().setTechnicienne(user);
												HibernateUtil.beginTransaction();
												HibernateUtil.getSession().saveOrUpdate(r.getResultat().getAnalyse());
												HibernateUtil.commitTransaction();
											}
										}
										if (idTypeDate == 23) {
											if (r.getDateSignature() == null) {
												r.setDateSignature(dateS);
											}
											if (r.getResultat().getDateRendu() == null) {
												r.getResultat().setDateRendu(dateS);
											}
											if (r.getResultat().getSignataire() == null) {
												r.getResultat().setSignataire(user);
											}
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(r.getResultat());
											HibernateUtil.commitTransaction();
										}
										HibernateUtil.beginTransaction();
										HibernateUtil.getSession().saveOrUpdate(r);
										HibernateUtil.commitTransaction();
									} else {
										System.out.println("pas de RenduFish pour cette date :" + ligneD);
									}
								} else {
									System.out.println("date resultat FISH à la main :" + ligneD);
								}
							}

							if (type.equals("idPuce_idResultatqPCR")) {
								idObj = idObj.substring(1, idObj.length() - 1);
								String[] tabl = idObj.split("_");
								if (tabl.length == 1 || (tabl.length == 2 && Integer.parseInt(tabl[1]) == 1)) {
									RenduBiomol r = ResultatServiceImpl.getInstance().getResultatqPCRByIdPuce(Integer.parseInt(tabl[0]));
									if (r != null) {
										if (idTypeDate == 19) {
											if (r.getDateRedaction() == null) {
												r.setDateRedaction(dateS);
											}
											if (r.getResultat().getAnalyse().getTechnicienne() == null) {
												r.getResultat().getAnalyse().setTechnicienne(user);
												HibernateUtil.beginTransaction();
												HibernateUtil.getSession().saveOrUpdate(r.getResultat().getAnalyse());
												HibernateUtil.commitTransaction();
											}

										}
										if (idTypeDate == 20) {
											if (r.getDateVerification() == null) {
												r.setDateVerification(dateS);
											}
											r.setVerificateur(user);
										}
										if (idTypeDate == 21) {
											if (r.getDateSignature() == null) {
												r.setDateSignature(dateS);
											}
											if (r.getResultat().getDateRendu() == null) {
												r.getResultat().setDateRendu(dateS);
											}
											r.getResultat().setSignataire(user);
											HibernateUtil.beginTransaction();
											HibernateUtil.getSession().saveOrUpdate(r.getResultat());
											HibernateUtil.commitTransaction();
										}
										HibernateUtil.beginTransaction();
										HibernateUtil.getSession().saveOrUpdate(r);
										HibernateUtil.commitTransaction();
									} else {
										System.out.println("pas de RenduPuce pour cette date :" + ligneD);
									}
								} else {
									System.out.println("date resultat qPCR à la main :" + ligneD);
								}
							}
						}
					}
				} catch (Exception e) {
					System.out.println("erreur date : " + ligneD);
					e.printStackTrace();

				}
			}

			FileInputStream fipH = new FileInputStream("C:/Users/Manon/Documents/workspace visiopuce2/visiopuce/historique.csv");

			InputStreamReader ipH = new InputStreamReader(fipH, "utf8");
			BufferedReader brH = new BufferedReader(ipH);
			StringBuffer txtH = new StringBuffer();
			while ((lu = brH.readLine()) != null) {
				txtH.append(lu);
			}
			String[] lignesH = txtH.toString().split("##");
			for (String ligneH : lignesH) {
				try {
					int idTypeDate = 0;
					String[] tableau = ligneH.split("°°");
					Utilisateur user = null;
					int idPersonne = 0;
					int idPrelevement = 0;
					int idPuce = 0;
					Personne personne = null;
					Prelevement prelevement = null;
					Puce puce = null;
					Date dateS = null;
					if (tableau.length > 2) {
						if (tableau[5].length() > 2) {
							idTypeDate = Integer.parseInt(tableau[5].substring(1, tableau[5].length() - 1));
						}
						if (tableau[7].length() > 2) {
							user = utilisateurService.getUtilisateurById(Integer.parseInt(tableau[7].substring(1, tableau[7].length() - 1)));
						}
						if (tableau[1].length() > 2 && !tableau[1].equals("NULL")) {
							idPersonne = Integer.parseInt(tableau[1].substring(1, tableau[1].length() - 1));
							personne = PersonneServiceImpl.getInstance().getPersonneById(idPersonne);
						}
						if (tableau[2].length() > 2 && !tableau[2].equals("NULL")) {
							idPrelevement = Integer.parseInt(tableau[2].substring(1, tableau[2].length() - 1));
						}
						if (tableau[3].length() > 2 && !tableau[3].equals("NULL")) {
							idPuce = Integer.parseInt(tableau[3].substring(1, tableau[3].length() - 1));
						}

						if (!tableau[6].isEmpty() && !tableau[6].equals("NULL")) {
							try {
								dateS = formatter.parse(tableau[6].substring(1, tableau[6].length() - 1));
							} catch (ParseException e) {
								System.out.println("erreur date " + tableau[6].substring(1, tableau[6].length() - 1) + ":" + ligneH);
								e.printStackTrace();
							}
						}

						if (idTypeDate == 2 && prelevement != null && prelevement.getDateReception() == null && prelevement.getDatePrelevement() == null) {
							prelevement.setDatePrelevement(dateS);
							prelevement.setDateReception(dateS);
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().save(prelevement);
							HibernateUtil.commitTransaction();
						}
						HibernateUtil.beginTransaction();
						Champ dateExtraction = ChampDAOImpl.getInstance().getChampByTypeAndIdObjet("dateExtraction", "Prel-" + idPrelevement);
						HibernateUtil.commitTransaction();
						if (idTypeDate == 3 && dateExtraction == null) {
							Champ dExtract = new Champ();
							dExtract.setIdObjet("Prel-" + idPrelevement);
							dExtract.setType("dateExtraction");
							dExtract.setValeur(formater.format(dateS));
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().save(dExtract);
							HibernateUtil.commitTransaction();
						}

						if (idTypeDate == 4 && puce != null) {
							if (puce.getAnalyse().getDateTechnique() == null) {
								puce.getAnalyse().setDateTechnique(dateS);
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 5 && puce != null) {
							if (puce.getDateScan() == null) {
								puce.setDateScan(dateS);
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
								HibernateUtil.commitTransaction();
							}
						}

						if (idTypeDate == 7 && puce != null) {
							if (puce.getDateRelecture() == null) {
								puce.setDateRelecture(dateS);
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
								HibernateUtil.commitTransaction();

								RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(idPuce);
								if (r.getResultat().getSignataire() == null) {
									r.getResultat().setSignataire(user);
									HibernateUtil.beginTransaction();
									HibernateUtil.getSession().saveOrUpdate(r.getResultat());
									HibernateUtil.commitTransaction();
								}
							}
						}

						if (idTypeDate == 10 && puce != null) {
							if (puce.getDateReunion() == null) {
								puce.setDateReunion(dateS);
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
								HibernateUtil.commitTransaction();
							}
						}

						if ((idTypeDate == 21 || idTypeDate == 20) && puce != null) {
							if (puce.getDateAnnotation() == null) {
								puce.setDateAnnotation(dateS);
								if (puce.getAnnotateur() == null) {
									puce.setAnnotateur(user);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
								HibernateUtil.commitTransaction();
							}
						}

						if ((idTypeDate == 22) && puce != null) {
							if (puce.getDateRelecture() == null) {
								puce.setDateRelecture(dateS);
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(puce.getAnalyse());
								HibernateUtil.commitTransaction();

								RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(idPuce);
								if (r.getResultat().getSignataire() == null) {
									r.getResultat().setSignataire(user);
									HibernateUtil.beginTransaction();
									HibernateUtil.getSession().saveOrUpdate(r.getResultat());
									HibernateUtil.commitTransaction();
								}
							}
						}

						if (idTypeDate == 18) {
							RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(personne.getIdPucePrincipale());
							if (r != null) {
								if (r.getResultat().getDateRendu() == null) {
									r.getResultat().setDateRendu(dateS);
								}
								if (r.getResultat().getSignataire() == null) {
									r.getResultat().setSignataire(user);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r.getResultat());
								HibernateUtil.commitTransaction();
							}
						}

						if (idTypeDate == 8) {
							RenduFish r = ResultatServiceImpl.getInstance().getResultatFishByIdPuce(idPuce);
							if (r != null) {
								if (r.getResultat().getAnalyse().getDateTechnique() == null) {
									r.getResultat().getAnalyse().setDateTechnique(dateS);
								}
								if (r.getResultat().getAnalyse().getTechnicienne() == null) {
									r.getResultat().getAnalyse().setTechnicienne(user);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r.getResultat().getAnalyse());
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 11) {
							RenduFish r = ResultatServiceImpl.getInstance().getResultatFishByIdPuce(idPuce);
							if (r != null) {
								if (r.getDateRedaction() == null) {
									r.setDateRedaction(dateS);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r);
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 15) {
							RenduFish r = ResultatServiceImpl.getInstance().getResultatFishByIdPuce(idPuce);
							if (r != null) {
								if (r.getDateSignature() == null) {
									r.setDateSignature(dateS);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r);
								HibernateUtil.commitTransaction();
								if (r.getResultat().getDateRendu() == null) {
									r.getResultat().setDateRendu(dateS);
								}
								if (r.getResultat().getSignataire() == null) {
									r.getResultat().setSignataire(user);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r.getResultat());
								HibernateUtil.commitTransaction();
							}
						}

						if (idTypeDate == 9) {
							RenduBiomol r = ResultatServiceImpl.getInstance().getResultatqPCRByIdPuce(idPuce);
							if (r != null) {
								if (r.getResultat().getAnalyse().getDateTechnique() == null) {
									r.getResultat().getAnalyse().setDateTechnique(dateS);
								}
								if (r.getResultat().getAnalyse().getTechnicienne() == null) {
									r.getResultat().getAnalyse().setTechnicienne(user);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r.getResultat().getAnalyse());
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 12) {
							RenduBiomol r = ResultatServiceImpl.getInstance().getResultatqPCRByIdPuce(idPuce);
							if (r != null) {
								if (r.getDateRedaction() == null) {
									r.setDateRedaction(dateS);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r);
								HibernateUtil.commitTransaction();
							}
						}

						if (idTypeDate == 14) {
							RenduBiomol r = ResultatServiceImpl.getInstance().getResultatqPCRByIdPuce(idPuce);
							if (r != null) {
								if (r.getDateVerification() == null) {
									r.setDateVerification(dateS);
								}
								if (r.getVerificateur() == null) {
									r.setVerificateur(user);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r);
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 16) {
							RenduBiomol r = ResultatServiceImpl.getInstance().getResultatqPCRByIdPuce(idPuce);
							if (r != null) {
								if (r.getDateSignature() == null) {
									r.setDateSignature(dateS);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r);
								HibernateUtil.commitTransaction();
								if (r.getResultat().getSignataire() == null) {
									r.getResultat().setSignataire(user);
								}
								if (r.getResultat().getDateRendu() == null) {
									r.getResultat().setDateRendu(dateS);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r.getResultat());
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 13) {
							RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(idPuce);
							if (r != null) {
								if (r.getDateRedaction() == null) {
									r.setDateRedaction(dateS);
								}
								HibernateUtil.beginTransaction();
								HibernateUtil.getSession().saveOrUpdate(r);
								HibernateUtil.commitTransaction();

							}
						}

						if (idTypeDate == 17) {
							RenduPuce r = ResultatServiceImpl.getInstance().getResultatPuceByIdPuce(idPuce);
							if (r != null) {
								if (r.getResultat().getSignataire() == null) {
									r.getResultat().setSignataire(user);
									HibernateUtil.beginTransaction();
									HibernateUtil.getSession().saveOrUpdate(r.getResultat());
									HibernateUtil.commitTransaction();
								}
							}
						}

						if (idTypeDate > 24 && puce != null) {
							Resultat r = new Resultat();
							r.setResultat("Echec");
							r.setDateRendu(dateS);
							r.setAnalyse(puce.getAnalyse());
							if (tableau[8].substring(1, tableau[6].length() - 1) != null && !tableau[8].substring(1, tableau[6].length() - 1).equals("NL")) {
								String raison = "";
								switch (idTypeDate) {
								case 25:
									raison = "ADN à reconcentrer";
									break;
								case 26:
									raison = "ADN à repurifier";
									break;
								case 27:
									raison = "demander un nouveau prélèvement";
									break;
								case 28:
									raison = "refaire une autre puce";
									break;
								case 29:
									raison = "rescanner la même puce";
									break;
								case 30:
									raison = "envoyé à l'extérieur";
									break;
								case 31:
									raison = "réanalyser avec d'autres paramètres";
									break;
								case 32:
									raison = "échantillon non conforme";
									break;
								case 33:
									raison = "Echec de la technique";
									break;
								case 34:
									raison = "Puce réalisée par erreur";
									break;
								case 35:
									raison = "Puce réalisée pour test";
									break;
								default:
									break;
								}
								r.setCommentaire("Raison : " + raison + " " + tableau[8]);

							}
							r.setSignataire(user);
							HibernateUtil.beginTransaction();
							HibernateUtil.getSession().saveOrUpdate(r);
							HibernateUtil.commitTransaction();
						}
					}
				} catch (Exception e) {
					System.out.println("erreur date : " + ligneH);
					e.printStackTrace();

				}

			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}